package com.company._1class;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class TestClass {

    public static void main(String[] args) throws Exception {
        Person p=new Person();
        p.setName("张三");
//        p.setAge(12);
        p.work();


        //通过全限定类名
//        Class c=Class.forName("com.company._1class.Person");

        //通过已经创建的对象得到他的类对象
        Class c2=p.getClass();

        // 通过类名获取类对象
//        Class c3=Person.class;



        Class c=Class.forName("com.company._1class.Person");

        Person p2=(Person) c.newInstance();

        Field f=c.getDeclaredField("age");
        f.setAccessible(true);   //将私有变量设为共有的
        f.set(p2,20);
        p2.work();

        //用反射的方式调用方法    找到对象中内置的方法，然后执行
        Method m=c.getDeclaredMethod("work",new Class[]{});
        m.invoke(p2);

    }


}
